// RAP [bm]: missing file handling - download/upload?
///*******************************************************************************
// * Copyright (c) 2005, 2009 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.internal.wizards.preferences;
//
//import java.io.File;
//import java.util.Arrays;
//import java.util.List;
//import java.util.Map;
//import org.eclipse.core.runtime.CoreException;
//import org.eclipse.core.runtime.Path;
//import org.eclipse.core.runtime.preferences.ConfigurationScope;
//import org.eclipse.core.runtime.preferences.IPreferenceFilter;
//import org.eclipse.core.runtime.preferences.InstanceScope;
//import org.eclipse.jface.dialogs.Dialog;
//import org.eclipse.jface.dialogs.IDialogConstants;
//import org.eclipse.jface.dialogs.IDialogSettings;
//import org.eclipse.jface.dialogs.MessageDialog;
//import org.eclipse.jface.viewers.CheckStateChangedEvent;
//import org.eclipse.jface.viewers.CheckboxTreeViewer;
//import org.eclipse.jface.viewers.ICheckStateListener;
//import org.eclipse.jface.viewers.ISelection;
//import org.eclipse.jface.viewers.ISelectionChangedListener;
//import org.eclipse.jface.viewers.IStructuredSelection;
//import org.eclipse.jface.viewers.SelectionChangedEvent;
//import org.eclipse.jface.viewers.TreeViewer;
//import org.eclipse.jface.wizard.WizardPage;
//import org.eclipse.osgi.util.NLS;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.events.SelectionAdapter;
//import org.eclipse.swt.events.SelectionEvent;
//import org.eclipse.swt.events.SelectionListener;
//import org.eclipse.swt.graphics.Font;
//import org.eclipse.swt.graphics.Image;
//import org.eclipse.swt.layout.GridData;
//import org.eclipse.swt.layout.GridLayout;
//import org.eclipse.swt.widgets.Button;
//import org.eclipse.swt.widgets.Combo;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Event;
//import org.eclipse.swt.widgets.FileDialog;
//import org.eclipse.swt.widgets.Group;
//import org.eclipse.swt.widgets.Label;
//import org.eclipse.swt.widgets.Listener;
//import org.eclipse.swt.widgets.Shell;
//import org.eclipse.swt.widgets.Text;
//import org.eclipse.swt.widgets.Widget;
//import org.eclipse.ui.dialogs.FilteredTree;
//import org.eclipse.ui.dialogs.IOverwriteQuery;
//import org.eclipse.ui.dialogs.PatternFilter;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.eclipse.ui.internal.preferences.PreferenceTransferElement;
//import org.eclipse.ui.internal.preferences.PreferenceTransferManager;
//import org.eclipse.ui.model.WorkbenchLabelProvider;
//
///**
// * Base class for preference export/import pages.
// *
// * @since 3.1
// */
//public abstract class WizardPreferencesPage extends WizardPage implements
// Listener, IOverwriteQuery {
//
// // widgets
// protected Combo destinationNameField;
//
// private Button destinationBrowseButton;
//
// private Button overwriteExistingFilesCheckbox;
//
// protected FilteredTree transfersTree;
//
// protected Text descText;
//
// private Composite buttonComposite;
//
// private Button transferAllButton;
//
// private Group group;
//
// private CheckboxTreeViewer viewer;
//
// private Button selectAllButton;
//
// private Button deselectAllButton;
//
// // dialog store id constants
// private static final String STORE_DESTINATION_NAMES_ID = "WizardPreferencesExportPage1.STORE_DESTINATION_NAMES_ID";//$NON-NLS-1$
//
// private static final String STORE_OVERWRITE_EXISTING_FILES_ID = "WizardPreferencesExportPage1.STORE_OVERWRITE_EXISTING_FILES_ID";//$NON-NLS-1$
//
// private static final String TRANSFER_ALL_PREFERENCES_ID = "WizardPreferencesExportPage1.EXPORT_ALL_PREFERENCES_ID"; //$NON-NLS-1$
//
// private static final String TRANSFER_PREFERENCES_NAMES_ID = "WizardPreferencesExportPage1.TRANSFER_PREFERENCES_NAMES_ID"; //$NON-NLS-1$
//
// private PreferenceTransferElement[] transfers;
//
// private String currentMessage;
//
// private static final String STORE_DESTINATION_ID = null;
//
// protected static final int COMBO_HISTORY_LENGTH = 5;
//
//
// /**
// * @param pageName
// */
// protected WizardPreferencesPage(String pageName) {
// super(pageName);
// }
//
// /**
// * Creates a new button with the given id.
// * <p>
// * The <code>Dialog</code> implementation of this framework method creates
// * a standard push button, registers for selection events including button
// * presses and registers default buttons with its shell. The button id is
// * stored as the buttons client data. Note that the parent's layout is
// * assumed to be a GridLayout and the number of columns in this layout is
// * incremented. Subclasses may override.
// * </p>
// *
// * @param parent
// * the parent composite
// * @param id
// * the id of the button (see <code>IDialogConstants.*_ID</code>
// * constants for standard dialog button ids)
// * @param label
// * the label from the button
// * @param defaultButton
// * <code>true</code> if the button is to be the default button,
// * and <code>false</code> otherwise
// */
// protected Button createButton(Composite parent, int id, String label,
// boolean defaultButton) {
// // increment the number of columns in the button bar
// ((GridLayout) parent.getLayout()).numColumns++;
//
// Button button = new Button(parent, SWT.PUSH);
// button.setFont(parent.getFont());
//
// setButtonLayoutData(button);
//
// button.setData(new Integer(id));
// button.setText(label);
//
// if (defaultButton) {
// Shell shell = parent.getShell();
// if (shell != null) {
// shell.setDefaultButton(button);
// }
// button.setFocus();
// }
// return button;
// }
//
// /**
// * Add the passed value to self's destination widget's history
// *
// * @param value
// * java.lang.String
// */
// protected void addDestinationItem(String value) {
// destinationNameField.add(value);
// }
//
// /**
// * (non-Javadoc) Method declared on IDialogPage.
// */
// public void createControl(Composite parent) {
// initializeDialogUnits(parent);
// Composite composite = new Composite(parent, SWT.NULL);
// composite.setLayout(new GridLayout());
// composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL
// | GridData.HORIZONTAL_ALIGN_FILL));
//
//
// createTransferArea(composite);
// setPreferenceTransfers();
//
// restoreWidgetValues();
// // updateWidgetEnablements();
//
// // can not finish initially, but don't want to start with an error
// // message either
// if (!(validDestination() && validateOptionsGroup() && validateSourceGroup())) {
// setPageComplete(false);
// }
//
// setControl(composite);
//
// giveFocusToDestination();
// Dialog.applyDialogFont(composite);
// }
//
// /**
// * @param composite
// */
// protected abstract void createTransferArea(Composite composite);
//
// /**
// * Validate the destination group.
// * @return <code>true</code> if the group is valid. If
// * not set the error message and return <code>false</code>.
// */
// protected boolean validateDestinationGroup() {
// if (!validDestination()) {
// currentMessage = getInvalidDestinationMessage();
// return false;
// }
//
// return true;
// }
//
// /**
// * Return the message that indicates an invalid destination.
// * @return String
// */
// abstract protected String getInvalidDestinationMessage();
//
// private String getNoOptionsMessage() {
// return PreferencesMessages.WizardPreferencesPage_noOptionsSelected;
// }
//
// protected boolean validDestination() {
// File file = new File(getDestinationValue());
// return !(file.getPath().length() <= 0 || file.isDirectory());
// }
//
// protected void setPreferenceTransfers() {
// PreferenceTransferElement[] transfers = getTransfers();
// viewer.setInput(transfers);
// }
//
// /*
// * return the PreferenceTransgerElements specified
// */
// protected PreferenceTransferElement[] getTransfers() {
// if (transfers == null) {
// transfers = PreferenceTransferManager.getPreferenceTransfers();
// }
// return transfers;
// }
//
// /**
// * @param composite
// */
// protected void createTransfersList(Composite composite) {
//
// transferAllButton = new Button(composite, SWT.CHECK);
// transferAllButton.setText(getAllButtonText());
//
// group = new Group(composite, SWT.NONE);
// GridData groupData = new GridData(GridData.FILL_BOTH);
// groupData.horizontalSpan = 2;
// groupData.horizontalIndent = IDialogConstants.INDENT;
// Object compositeLayout = composite.getLayout();
// if (compositeLayout instanceof GridLayout) {
// groupData.horizontalIndent -= ((GridLayout) compositeLayout).marginWidth;
// groupData.horizontalIndent -= ((GridLayout) compositeLayout).marginLeft;
// }
// group.setLayoutData(groupData);
//
// GridLayout layout = new GridLayout();
// group.setLayout(layout);
//
// transfersTree = createFilteredTree(group);
//
// transfersTree.setLayoutData(new GridData(GridData.FILL_BOTH));
//
// viewer = (CheckboxTreeViewer) transfersTree.getViewer();
// viewer.setContentProvider(new PreferencesContentProvider());
// viewer.setLabelProvider(new WorkbenchLabelProvider());
//
// Label description = new Label(group, SWT.NONE);
// description.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// description.setText(PreferencesMessages.WizardPreferences_description);
//
// descText = new Text(group, SWT.V_SCROLL | SWT.READ_ONLY
// | SWT.BORDER | SWT.WRAP);
// GridData descriptionData = new GridData(GridData.FILL_BOTH);
// descriptionData.heightHint = convertHeightInCharsToPixels(3);
// descText.setLayoutData(descriptionData);
//
// transferAllButton.addSelectionListener(new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// if (transferAllButton.getSelection()) {
// viewer.setAllChecked(false);
// }
// updateEnablement();
// updatePageCompletion();
// }
// });
//
// viewer.addSelectionChangedListener(new ISelectionChangedListener() {
//
// public void selectionChanged(SelectionChangedEvent event) {
// updateDescription();
// }
// });
//
// viewer.addCheckStateListener(new ICheckStateListener() {
// public void checkStateChanged(CheckStateChangedEvent event) {
// transferAllButton.setSelection(false);
// updateEnablement();
// updatePageCompletion();
// }
// });
//
// addSelectionButtons(group);
//
// }
//
// protected void updateDescription() {
// ISelection selection = viewer.getSelection();
// String desc = ""; //$NON-NLS-1$
// if (!selection.isEmpty()) {
// Object element = ((IStructuredSelection) selection)
// .getFirstElement();
// if ((element instanceof PreferenceTransferElement)) {
// desc = ((PreferenceTransferElement) element).getDescription();
// }
// }
// descText.setText(desc);
// }
//
// private FilteredTree createFilteredTree(Group group) {
// int style = SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;
// FilteredTree transfersTree = new FilteredTree(group, style,
// new PatternFilter(), true) {
// protected TreeViewer doCreateTreeViewer(Composite parent, int style) {
// return new CheckboxTreeViewer(parent, style);
// }
// };
// return transfersTree;
// }
//
// protected abstract String getChooseButtonText();
//
// protected abstract String getAllButtonText();
//
// /**
// * Add the selection and deselection buttons to the composite.
// *
// * @param composite
// * org.eclipse.swt.widgets.Composite
// */
// private void addSelectionButtons(Composite composite) {
// Font parentFont = composite.getFont();
// buttonComposite = new Composite(composite, SWT.NONE);
// GridLayout layout = new GridLayout();
// layout.numColumns = 2;
// buttonComposite.setLayout(layout);
// GridData data = new GridData(GridData.GRAB_HORIZONTAL);
// data.grabExcessHorizontalSpace = true;
// buttonComposite.setLayoutData(data);
// buttonComposite.setFont(parentFont);
//
// selectAllButton = createButton(buttonComposite,
// IDialogConstants.SELECT_ALL_ID,
// PreferencesMessages.SelectionDialog_selectLabel, false);
//
// SelectionListener listener = new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// viewer.setAllChecked(true);
// updatePageCompletion();
// }
// };
// selectAllButton.addSelectionListener(listener);
// selectAllButton.setFont(parentFont);
//
// deselectAllButton = createButton(buttonComposite,
// IDialogConstants.DESELECT_ALL_ID,
// PreferencesMessages.SelectionDialog_deselectLabel, false);
//
// listener = new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// viewer.setAllChecked(false);
// updatePageCompletion();
// }
// };
// deselectAllButton.addSelectionListener(listener);
// deselectAllButton.setFont(parentFont);
// }
//
// /**
// * @param bool
// */
// protected void setAllChecked(boolean bool) {
// transferAllButton.setSelection(false);
// }
//
// /**
// * Create the export destination specification widgets
// *
// * @param parent
// * org.eclipse.swt.widgets.Composite
// */
// protected void createDestinationGroup(Composite parent) {
// // destination specification group
// Composite destinationSelectionGroup = new Composite(parent, SWT.NONE);
// GridLayout layout = new GridLayout();
// layout.numColumns = 3;
// destinationSelectionGroup.setLayout(layout);
// destinationSelectionGroup.setLayoutData(new GridData(
// GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
//
// Label dest = new Label(destinationSelectionGroup, SWT.NONE);
// dest.setText(getDestinationLabel());
//
// // destination name entry field
// destinationNameField = new Combo(destinationSelectionGroup, SWT.SINGLE
// | SWT.BORDER);
// destinationNameField.addListener(SWT.Modify, this);
// destinationNameField.addListener(SWT.Selection, this);
// GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL
// | GridData.GRAB_HORIZONTAL);
// destinationNameField.setLayoutData(data);
//
// // destination browse button
// destinationBrowseButton = new Button(destinationSelectionGroup,
// SWT.PUSH);
// destinationBrowseButton
// .setText(PreferencesMessages.PreferencesExport_browse);
// setButtonLayoutData(destinationBrowseButton);
// destinationBrowseButton.addListener(SWT.Selection, this);
//
// new Label(parent, SWT.NONE); // vertical spacer
// }
//
// /**
// * Create the export options specification widgets.
// *
// * @param parent
// * org.eclipse.swt.widgets.Composite
// */
// protected void createOptionsGroup(Composite parent) {
// // options group
//
// Composite optionsGroup = new Composite(parent, SWT.NONE);
// GridLayout layout = new GridLayout();
// layout.marginHeight = 0;
// optionsGroup.setLayout(layout);
// optionsGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
// | GridData.GRAB_HORIZONTAL));
//
// // overwrite... checkbox
// overwriteExistingFilesCheckbox = new Button(optionsGroup, SWT.CHECK
// | SWT.LEFT);
// overwriteExistingFilesCheckbox
// .setText(PreferencesMessages.ExportFile_overwriteExisting);
//
// }
//
// /**
// * Attempts to ensure that the specified directory exists on the local file
// * system. Answers a boolean indicating success.
// *
// * @return boolean
// * @param directory
// * java.io.File
// */
// protected boolean ensureDirectoryExists(File directory) {
// if (!directory.exists()) {
// if (!queryYesNoQuestion(PreferencesMessages.PreferencesExport_createTargetDirectory)) {
// return false;
// }
//
// if (!directory.mkdirs()) {
// MessageDialog
// .open(
// MessageDialog.ERROR,
// getContainer().getShell(),
// PreferencesMessages.PreferencesExport_error,
// PreferencesMessages.PreferencesExport_directoryCreationError,
// SWT.SHEET);
// return false;
// }
// }
// return true;
// }
//
// /**
// * Displays a Yes/No question to the user with the specified message and
// * returns the user's response.
// *
// * @param message
// * the question to ask
// * @return <code>true</code> for Yes, and <code>false</code> for No
// */
// protected boolean queryYesNoQuestion(String message) {
// MessageDialog dialog = new MessageDialog(getContainer().getShell(),
// PreferencesMessages.Question, (Image) null, message,
// MessageDialog.NONE, new String[] { IDialogConstants.YES_LABEL,
// IDialogConstants.NO_LABEL }, 0) {
// protected int getShellStyle() {
// return super.getShellStyle() | SWT.SHEET;
// }
// };
// // ensure yes is the default
//
// return dialog.open() == 0;
// }
//
// /**
// * If the target for export does not exist then attempt to create it. Answer
// * a boolean indicating whether the target exists (ie.- if it either
// * pre-existed or this method was able to create it)
// *
// * @return boolean
// */
// protected boolean ensureTargetIsValid(File file) {
// if (file.exists()) {
// if (!getOverwriteExisting()) {
// String msg = NLS
// .bind(
// PreferencesMessages.WizardPreferencesExportPage1_overwrite,
// file.getAbsolutePath());
// if (!queryYesNoQuestion(msg)) {
// return false;
// }
// }
// file.delete();
// } else if (!file.isDirectory()) {
// File parent = file.getParentFile();
// if (parent != null) {
// file.getParentFile().mkdirs();
// }
// }
// return true;
// }
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.ui.dialogs.WizardDataTransferPage#saveWidgetValues()
// */
// protected void saveWidgetValues() {
//
// IDialogSettings settings = getDialogSettings();
// if (settings != null) {
// String[] directoryNames = settings
// .getArray(STORE_DESTINATION_NAMES_ID);
// if (directoryNames == null) {
// directoryNames = new String[0];
// }
//
// directoryNames = addToHistory(directoryNames, getDestinationValue());
// settings.put(STORE_DESTINATION_NAMES_ID, directoryNames);
// String current = getDestinationValue();
// if (current != null && !current.equals("")) { //$NON-NLS-1$
// settings.put(STORE_DESTINATION_ID, current);
// }
// // options
// if (overwriteExistingFilesCheckbox != null) {
// settings.put(STORE_OVERWRITE_EXISTING_FILES_ID,
// overwriteExistingFilesCheckbox.getSelection());
// }
//
// if (shouldSaveTransferAll()) {
//
// boolean transferAll = getTransferAll();
// settings.put(TRANSFER_ALL_PREFERENCES_ID, transferAll);
// if (!transferAll) {
// Object[] elements = viewer.getCheckedElements();
// String[] preferenceIds = new String[elements.length];
// for (int i = 0; i < elements.length; i++) {
// PreferenceTransferElement element = (PreferenceTransferElement) elements[i];
// preferenceIds[i] = element.getID();
// }
// settings.put(TRANSFER_PREFERENCES_NAMES_ID, preferenceIds);
// }
// }
//
// }
// }
//
// /**
// * The Finish button was pressed. Try to do the required work now and answer
// * a boolean indicating success. If false is returned then the wizard will
// * not close.
// *
// * @return boolean
// */
// public boolean finish() {
// // about to invoke the operation so save our state
// saveWidgetValues();
//
// IPreferenceFilter[] transfers = null;
//
// if (getTransferAll()) {
// // export all
// transfers = new IPreferenceFilter[1];
//
// // For export all create a preference filter that can export
// // all nodes of the Instance and Configuration scopes
// transfers[0] = new IPreferenceFilter() {
//
// public String[] getScopes() {
// return new String[] { InstanceScope.SCOPE,
// ConfigurationScope.SCOPE };
// }
//
// public Map getMapping(String scope) {
// return null;
// }
// };
// } else {
// transfers = getFilters();
// }
//
// boolean success = transfer(transfers);
// // if it was a successful tranfer then store the name of the file to use
// // it on the next export
// if (success) {
// saveWidgetValues();
// }
// return success;
// }
//
// /**
// * @return the preference transfer filters
// */
// protected IPreferenceFilter[] getFilters() {
// IPreferenceFilter[] filters = null;
// PreferenceTransferElement[] transferElements;
// transferElements = getPreferenceTransferElements();
// if (transferElements != null) {
// filters = new IPreferenceFilter[transferElements.length];
// for (int j = 0; j < transferElements.length; j++) {
// PreferenceTransferElement element = transferElements[j];
// try {
// filters[j] = element.getFilter();
// } catch (CoreException e) {
// WorkbenchPlugin.log(e.getMessage(), e);
// }
// }
// } else {
// filters = new IPreferenceFilter[0];
// }
//
// return filters;
// }
//
// /**
// * @return the list of transfer elements
// */
// protected PreferenceTransferElement[] getPreferenceTransferElements() {
// Object[] checkedElements = viewer.getCheckedElements();
// PreferenceTransferElement[] transferElements = new PreferenceTransferElement[checkedElements.length];
// System.arraycopy(checkedElements, 0, transferElements, 0,
// checkedElements.length);
// return transferElements;
// }
//
// /**
// * @param transfers
// * @return boolean
// */
// protected abstract boolean transfer(IPreferenceFilter[] transfers);
//
// /**
// * Check whether the internal state of the page is complete and update the
// * dialog
// */
// public void setPageComplete() {
// boolean complete = true;
//
// if (!determinePageCompletion()) {
// complete = false;
// }
//
// super.setPageComplete(complete);
// }
//
// /**
// * Returns whether this page is complete. This determination is made based
// * upon the current contents of this page's controls. Subclasses wishing to
// * include their controls in this determination should override the hook
// * methods <code>validateSourceGroup</code> and/or
// * <code>validateOptionsGroup</code>.
// *
// * @return <code>true</code> if this page is complete, and
// * <code>false</code> if incomplete
// * @see #validateSourceGroup
// * @see #validateOptionsGroup
// */
// protected boolean determinePageCompletion() {
//
// // validate groups in order of priority so error message is the most important one
// boolean complete = validateSourceGroup() && validateDestinationGroup()
// && validateOptionsGroup();
//
// // Avoid draw flicker by not clearing the error
// // message unless all is valid.
// if (complete) {
// setErrorMessage(null);
// } else {
// setErrorMessage(currentMessage);
// }
//
// return complete;
// }
//
// /**
// * Returns whether this page's options group's controls currently all
// * contain valid values.
// * <p>
// * The <code>WizardPreferencesPage</code> implementation of this method
// * returns <code>true</code> if the button to transfer all preferences is
// * selected OR at least one of the individual items are checked. Subclasses
// * may reimplement this method.
// * </p>
// *
// * @return <code>true</code> indicating validity of all controls in the
// * options group
// */
// protected boolean validateOptionsGroup() {
// boolean isValid = true;
// if (!getTransferAll()) {
// Object[] checkedElements = viewer.getCheckedElements();
// if (checkedElements == null || checkedElements.length == 0) {
// currentMessage = getNoOptionsMessage();
// isValid = false;
// }
// }
// return isValid;
// }
//
// /**
// * Returns whether this page's source specification controls currently all
// * contain valid values.
// * <p>
// * The <code>WizardDataTransferPage</code> implementation of this method
// * returns <code>true</code>. Subclasses may reimplement this hook
// * method.
// * </p>
// *
// * @return <code>true</code> indicating validity of all controls in the
// * source specification group
// */
// protected boolean validateSourceGroup() {
// return true;
// }
//
// /**
// * Answer the string to display in self as the destination type
// *
// * @return java.lang.String
// */
// protected abstract String getDestinationLabel();
//
// /**
// * Answer the contents of self's destination specification widget
// *
// * @return java.lang.String
// */
// protected String getDestinationValue() {
// return destinationNameField.getText().trim();
// }
//
// /**
// * Set the current input focus to self's destination entry field
// */
// protected void giveFocusToDestination() {
// destinationNameField.setFocus();
// }
//
// /**
// * Open an appropriate destination browser so that the user can specify a
// * source to import from
// */
// protected void handleDestinationBrowseButtonPressed() {
// FileDialog dialog = new FileDialog(getContainer().getShell(),
// getFileDialogStyle());
// dialog.setText(getFileDialogTitle());
// dialog.setFilterPath(getDestinationValue());
// dialog.setFilterExtensions(new String[] { "*.epf" ,"*.*"}); //$NON-NLS-1$ //$NON-NLS-2$
// String selectedFileName = dialog.open();
//
// if (selectedFileName != null) {
// setDestinationValue(selectedFileName);
// }
// }
//
// protected abstract String getFileDialogTitle();
//
// protected abstract int getFileDialogStyle();
//
// /**
// * Handle all events and enablements for widgets in this page
// *
// * @param e
// * Event
// */
// public void handleEvent(Event e) {
// Widget source = e.widget;
//
// if (source == destinationBrowseButton) {
// handleDestinationBrowseButtonPressed();
// }
//
// updatePageCompletion();
// }
//
// /**
// * Determine if the page is complete and update the page appropriately.
// */
// protected void updatePageCompletion() {
// boolean pageComplete = determinePageCompletion();
// setPageComplete(pageComplete);
// if (pageComplete) {
// setMessage(null);
// }
// }
//
// /**
// * Adds an entry to a history, while taking care of duplicate history items
// * and excessively long histories. The assumption is made that all histories
// * should be of length <code>WizardDataTransferPage.COMBO_HISTORY_LENGTH</code>.
// *
// * @param history the current history
// * @param newEntry the entry to add to the history
// */
// protected String[] addToHistory(String[] history, String newEntry) {
// java.util.ArrayList l = new java.util.ArrayList(Arrays.asList(history));
// addToHistory(l, newEntry);
// String[] r = new String[l.size()];
// l.toArray(r);
// return r;
// }
//
// /**
// * Adds an entry to a history, while taking care of duplicate history items
// * and excessively long histories. The assumption is made that all histories
// * should be of length <code>WizardDataTransferPage.COMBO_HISTORY_LENGTH</code>.
// *
// * @param history the current history
// * @param newEntry the entry to add to the history
// */
// protected void addToHistory(List history, String newEntry) {
// history.remove(newEntry);
// history.add(0, newEntry);
//
// // since only one new item was added, we can be over the limit
// // by at most one item
// if (history.size() > COMBO_HISTORY_LENGTH) {
// history.remove(COMBO_HISTORY_LENGTH);
// }
// }
//
// /**
// * Hook method for restoring widget values to the values that they held last
// * time this wizard was used to completion.
// */
// protected void restoreWidgetValues() {
//
// IDialogSettings settings = getDialogSettings();
// if (shouldSaveTransferAll() && settings != null) {
//
// boolean transferAll;
// if (settings.get(TRANSFER_ALL_PREFERENCES_ID) == null)
// transferAll = true;
// else
// transferAll = settings
// .getBoolean(TRANSFER_ALL_PREFERENCES_ID);
// transferAllButton.setSelection(transferAll);
// if (!transferAll) {
// String[] preferenceIds = settings
// .getArray(TRANSFER_PREFERENCES_NAMES_ID);
// if (preferenceIds != null) {
// PreferenceTransferElement[] transfers = getTransfers();
// for (int i = 0; i < transfers.length; i++) {
// for (int j = 0; j < preferenceIds.length; j++) {
// if (transfers[i].getID().equals(preferenceIds[j])) {
// viewer.setChecked(transfers[i], true);
// break;
// }
// }
// }
// }
// }
// } else {
// transferAllButton.setSelection(true);
// }
// updateEnablement();
//
// if (settings != null) {
// String[] directoryNames = settings
// .getArray(STORE_DESTINATION_NAMES_ID);
// if (directoryNames != null) {
// // destination
// setDestinationValue(directoryNames[0]);
// for (int i = 0; i < directoryNames.length; i++) {
// addDestinationItem(directoryNames[i]);
// }
//
// String current = settings.get(STORE_DESTINATION_ID);
// if (current != null) {
// setDestinationValue(current);
// }
// // options
// if (overwriteExistingFilesCheckbox != null) {
// overwriteExistingFilesCheckbox.setSelection(settings
// .getBoolean(STORE_OVERWRITE_EXISTING_FILES_ID));
// }
// }
// }
// }
//
// protected abstract boolean shouldSaveTransferAll();
//
// private boolean getOverwriteExisting() {
// return overwriteExistingFilesCheckbox.getSelection();
// }
//
// private boolean getTransferAll() {
// return transferAllButton.getSelection();
// }
//
// /**
// * Set the contents of self's destination specification widget to the passed
// * value
// *
// * @param value
// * java.lang.String
// */
// protected void setDestinationValue(String value) {
// destinationNameField.setText(value);
// }
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.jface.dialogs.DialogPage#dispose()
// */
// public void dispose() {
// super.dispose();
// transfers = null;
// }
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.ui.dialogs.WizardDataTransferPage#allowNewContainerName()
// */
// protected boolean allowNewContainerName() {
// return true;
// }
//
// /**
// * The <code>WizardDataTransfer</code> implementation of this
// * <code>IOverwriteQuery</code> method asks the user whether the existing
// * resource at the given path should be overwritten.
// *
// * @param pathString
// * @return the user's reply: one of <code>"YES"</code>, <code>"NO"</code>,
// * <code>"ALL"</code>, or <code>"CANCEL"</code>
// */
// public String queryOverwrite(String pathString) {
//
// Path path = new Path(pathString);
//
// String messageString;
// // Break the message up if there is a file name and a directory
// // and there are at least 2 segments.
// if (path.getFileExtension() == null || path.segmentCount() < 2) {
// messageString = NLS.bind(
// PreferencesMessages.WizardDataTransfer_existsQuestion,
// pathString);
// } else {
// messageString = NLS
// .bind(
// PreferencesMessages.WizardDataTransfer_overwriteNameAndPathQuestion,
// path.lastSegment(), path.removeLastSegments(1)
// .toOSString());
// }
//
// final MessageDialog dialog = new MessageDialog(getContainer()
// .getShell(), PreferencesMessages.Question, null, messageString,
// MessageDialog.QUESTION, new String[] {
// IDialogConstants.YES_LABEL,
// IDialogConstants.YES_TO_ALL_LABEL,
// IDialogConstants.NO_LABEL,
// IDialogConstants.NO_TO_ALL_LABEL,
// IDialogConstants.CANCEL_LABEL }, 0) {
// protected int getShellStyle() {
// return super.getShellStyle() | SWT.SHEET;
// }
// };
// String[] response = new String[] { YES, ALL, NO, NO_ALL, CANCEL };
// // run in syncExec because callback is from an operation,
// // which is probably not running in the UI thread.
// getControl().getDisplay().syncExec(new Runnable() {
// public void run() {
// dialog.open();
// }
// });
// return dialog.getReturnCode() < 0 ? CANCEL : response[dialog
// .getReturnCode()];
// }
//
// private void updateEnablement() {
// boolean transferAll = getTransferAll();
// selectAllButton.setEnabled(!transferAll);
// deselectAllButton.setEnabled(!transferAll);
// }
//}